<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // https://leetcode.cn/problems/house-robber/description/
      function robo(nums) {
        /**
         * 公式：max(第 i 间要偷，第 i 间不偷)  =》取最大值就是最终结果
         *      max(nums[i] + dp[i - 2] , dp[i - 1])
         *      dp[i - 2] => 表示的是 当前 i 间房子的前两间房子以及之前偷的最大金额
         *      dp[i - 1] => 表示的是 当前 i 间房子的前一间房子以及之前偷的最大金额
         * 将这些子问题都存到 dp 数组中
         *
         * 处理边界情况 length = 1 =》nums[0] , length = 2 =》max(nums[0],nums[1])
         * **/
        if (nums.length === 1) return nums[0];
        if (nums.length === 2) return Math.max(nums[0], nums[1]);

        const dp = [nums[0], Math.max(nums[0], nums[1])];
        for (let i = 2; i < nums.length; i++) {
          dp[i] = Math.max(nums[i] + dp[i - 2], dp[i - 1]);
        }

        return dp[dp.length - 1];
      }

      const result = robo([1, 2, 6, 7, 8, 9, 1]);
      console.log(result);
    </script>
  </body>
</html>
